home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Robocode / robocode-setup-1.0.7.jar / extract.jar / robots / sampleteam / MyFirstDroid.java < prev    next >
Encoding:
Java Source  |  2005-02-18  |  1.4 KB  |  60 lines

  1. package sampleteam;
  2. import robocode.*;
  3. //import java.awt.Color;
  4.  
  5. /**
  6.  * SimpleDroid - a sample robot by Mathew Nelson
  7.  * 
  8.  * Follows orders of team leader
  9.  */
  10. public class MyFirstDroid extends TeamRobot implements Droid
  11. {
  12.     /**
  13.      * run: Droid's default behavior
  14.      */
  15.     public void run() {
  16.         System.out.println("MyFirstDroid ready.");
  17.     }
  18.     
  19.     /**
  20.      * onMessageReceived: What to do when our leader sends a message
  21.      */
  22.     public void onMessageReceived(MessageEvent e)
  23.     {
  24.         // Fire at a point
  25.         if (e.getMessage() instanceof Point)
  26.         {
  27.             Point p = (Point)e.getMessage();
  28.             // Calculate x and y to target
  29.             double dx = p.getX() - this.getX();
  30.             double dy = p.getY() - this.getY();
  31.             // Calculate angle to target
  32.             double theta = Math.toDegrees(Math.atan2(dx,dy));
  33.             // Turn gun to target
  34.             turnGunRight(normalRelativeAngle(theta - getGunHeading()));
  35.             // Fire hard!
  36.             fire(3);
  37.         }
  38.         // Set our colors
  39.         else if (e.getMessage() instanceof RobotColors)
  40.         {
  41.             RobotColors c = (RobotColors)e.getMessage();
  42.             setColors(c.getBodyColor(),c.getGunColor(),c.getRadarColor());
  43.         }
  44.     }
  45.     
  46.     /**
  47.      * normalRelativeAngle:  returns angle such that -180<angle<=180
  48.      */    
  49.     public double normalRelativeAngle(double angle) {
  50.         if (angle > -180 && angle <= 180)
  51.             return angle;
  52.         double fixedAngle = angle;
  53.         while (fixedAngle <= -180)
  54.             fixedAngle += 360;
  55.         while (fixedAngle > 180)
  56.             fixedAngle -= 360;
  57.         return fixedAngle;
  58.     }
  59. }
  60.